Skip to content

EF Core Power Tools 介紹

TLDR

  • EF Core Power Tools 提供圖形化介面執行反向工程,解決原生指令複雜與客製化困難的問題。
  • 透過 efpt.config.json 統一設定檔,確保團隊開發環境一致。
  • 支援 .NET 8 的 DateOnlyTimeOnly 型別對應,避免 SQL date/time 被誤轉為 DateTime
  • 擴充套件版本與 EF Core 版本高度相依,維護跨版本專案時可能需安裝多個 Visual Studio 實例。
  • 若需支援 PostgreSQL 與 SQLite,可安裝 EF Core Power Pack 擴充套件。

EF Core Power Tools 核心優勢

在 Entity Framework Core 中,官方預設僅支援 Code First 開發模式。若要實現 Database First 的效果,通常需透過反向工程(Reverse Engineering)產生程式碼。使用 EF Core Power Tools 可解決以下問題:

  • 指令複雜度:原生指令操作繁瑣且容易因參數錯誤導致產出差異。該工具提供 GUI 介面,降低操作門檻。
  • 客製化彈性:支援透過 T4 範本或 Handlebars 進行程式碼客製化。
  • 設定一致性:所有反向工程設定皆儲存於 efpt.config.json,確保團隊成員使用相同的產生規則。

DateOnly 與 TimeOnly 對應

什麼情況下會遇到這個問題:當資料庫欄位為 datetime 型別,但 EF Core 預設將其對應至 DateTime 時。

在 EF Core 8 中,該工具於進階設定提供「Map DateOnly and TimeOnly」選項,可精確對應 C# 的 DateOnlyTimeOnly 型別,避免型別誤用。

版本相依性限制

什麼情況下會遇到這個問題:當同時維護跨越 .NET Core 3.1 到 .NET 8 的多個專案時。

EF Core Power Tools 的版本與 EF Core 及 .NET 版本具有嚴格的相依性,不同專案可能需要對應不同版本的擴充套件:

  • EF Core Power Tools 2.5.1429:最後支援 Entity Framework Core 3.1 的版本。
  • EF Core Power Tools 2.6.698:最後支援 Entity Framework Core 7 的版本。

若開發環境需同時支援多個版本,建議安裝多個 Visual Studio 實例(如正式版與 Preview 版)以隔離擴充套件環境。

EF Core Power Pack 擴充支援

什麼情況下會遇到這個問題:當專案使用 SQL Server 以外的資料庫(如 PostgreSQL 或 SQLite)進行反向工程時。

由於 EF Core Power Tools 主要針對 SQL Server 設計,作者另外開發了 EF Core Power Pack 來擴充支援。

安裝與使用

安裝後,系統會自動整合 VisualStudio.Data.SqliteNpgsql PostgreSQL Integration。在 Visual Studio「新增資料庫連線」時,點擊「變更(C)」按鈕,即可在清單中選擇 PostgreSQL 或 SQLite 進行後續操作。


異動歷程

    • 初版文件建立。